Thí dụ Facade_pattern

Java

Ví dụ sau đây che phần API calendar phức tạp bởi một facede thân thiện hơn. Kết quả là:

Date: 1980-08-2020 days after: 1980-09-09
import java.util.*;/** "Facade" */class UserfriendlyDate{    GregorianCalendar gcal;         public UserfriendlyDate(String isodate_ymd) {        String[] a = isodate_ymd.split("-");        gcal = new GregorianCalendar(Integer.parseInt(a[0]),              Integer.parseInt(a[1])-1 /* !!! */, Integer.parseInt(a[2]));    }    public void addDays(int days) { gcal.add(Calendar.DAY_OF_MONTH, days); }    public String toString() { return String.format("%1$tY-%1$tm-%1$td", gcal);}}/** "Client" */class FacadePattern{    public static void main(String[] args)     {          UserfriendlyDate d = new UserfriendlyDate("1980-08-20");           System.out.println("Date: "+d);           d.addDays(20);           System.out.println("20 days after: "+d);    }}

C++

class Ink {     public:         void CheckInk() {             cout << "+ Check ink done" << "\n";         }};class Paper {     public:         void CheckPaper() {             cout << "+ Check paper" << "\n";         }         void GetPaperForPrinting() {             cout << "+ Get paper for printing" << "\n";         } };class PrinterEngine {     public:         void LoadDocument() {             cout << "+ Load document from computer" << "\n";         }         void FormatDocumentData() {             cout << "+ Format data" << "\n";         }         void WarmUp() {             cout << "+ Engine was warm up" << "\n";         }         void PrepareLaser() {             cout << "+ Prepare laser" << "\n";         }         void InkToPaper() {             cout << "+ Ink to paper" << "\n";         }};/* Facade */class PrinterController {     public:         void Print() {             Ink ink;             Paper paper;             PrinterEngine engine;              ink.CheckInk();             paper.CheckPaper();             engine.LoadDocument();             engine.FormatDocumentData();             paper.GetPaperForPrinting();             engine.PrepareLaser();             engine.WarmUp();             engine.InkToPaper();         } };/** Client **/int main() {     cout << "I want to print document" << "\n";      PrinterController printer;     printer.Print();      cout << "I had printed document" << "\n";}